package com.atguigu.state.money2;

/**
 * @program: design-patterns
 * @author: yangshen
 * @description:
 * 1.抽象类，默认实现了 State 接口的所有方法
 * 2.该类的所有方法，其子类(具体的状态类)，可以有选择的进行重写
 * @create: 2022-03-31 11:15
 **/
public abstract class AbstractState {

    protected static final RuntimeException EXCEPTION = new RuntimeException("操作流程不允许");

    /**
     * 电审审核
     */
    public void checkEvent(Context context) {
        throw EXCEPTION;
    }

    /**
     * 电审失败
     */
    public void checkFailEvent(Context context) {
        throw EXCEPTION;
    }

    /**
     * 定价发布
     */
    public void makePriceEvent(Context context) {
        throw EXCEPTION;
    }

    /**
     * 接单
     */
    public void acceptOrderEvent(Context context) {
        throw EXCEPTION;
    }

    /**
     * 无人接单失效
     */
    public void notPeopleAcceptEvent(Context context) {
        throw EXCEPTION;
    }

    /**
     * 付款
     */
    public void payOrderEvent(Context context) {
        throw EXCEPTION;
    }

    /**
     * 接单有人支付失效
     */
    public void orderFailureEvent(Context context) {
        throw EXCEPTION;
    }

    /**
     * 反馈
     */
    public void feedBackEvent(Context context) {
        throw EXCEPTION;
    }

    /**
     * 获取当前状态
     */
    public String getCurrentState() {
        throw EXCEPTION;
    }

}
